package 集合.MyList;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*
    ListIterator列表迭代器
        通过List集合的listiterator()方法得到，List集合特有的迭代器
        用于允许程序员沿任意方向遍历列表的列表迭代器，在迭代期间修改列表，并获取列表中迭代器的当前位置

    常用方法
        E next()：返回迭代中的下一个元素
        boolean hasNext()：如果迭代具有更多元素，则返回true
        E previous()：返回列表中上一个元素
        boolean hasPrevious()：如果此列表迭代在相反方向上遍历列表时有更多元素，返回true
        void add(E e):将指定的元素插入列表
*/
public class ListIteratorDemo {
    public static void main(String[] args) {
        //创建集合对象
        List<String> list=new ArrayList<>();

        //添加对象
        list.add("hello");
        list.add("world");
        list.add("java");

        /*
        //通过List集合的ListIterator()方法得到
        ListIterator<String> lit = list.listIterator();//不经常使用，经常使用iterator
        while (lit.hasNext()){
            String s=lit.next();
            System.out.println(s);
        }
        System.out.println("-----");
        while (lit.hasPrevious()){//不经常使用hasPrevious()
            String s=lit.previous();
            System.out.println(s);
        }
        */

        //获取列表迭代器
        ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()){
            String s=lit.next();
            if(s.equals("world")){
                lit.add("javaee");//通过列表迭代器添加，不会发生并发异常
            }
        }
        System.out.println(list);
    }
}
